package dao;

import model.DTO.OrderPaymentDTO;
import model.VO.OrderVO;
import model.VO.OrderWeekTurnoverVO;
import model.entity.Order;
import model.entity.User;

import java.util.List;

public interface OrderDao {
    //取消订单
    void cancel(int id,String cancelReason,int payStatus);
    //完成订单
    void complete(int id);
    String order(float amount,int payMethod,String remark,int type,String phone,String username,String shop_address);
    void orderDetail(int dishId,int setmealId,int categoryId,String name,String image,int orderId,int number,float amount);
    Order getByNumber(String number);

    //分页查询订单
    List<Order> pageQuery(int page, int pageSize, String status, String number, String orderTime);
    //查询订单详情
    OrderVO getOrderInfo(int id);
    //修改为请取餐
    void pickMeal(int id);
    //获取所有订单数
    int getOrderAll();
    //获取今日订单数
    int getDayOrderAll();
    //获取总营业额
    double getTurnoverAll();
    //获取今日总营业额
    double getDayTurnoverAll();
    //获取总支付量
    int getPayCountAll();
    //获取今日支付量
    int getDayPayCountAll();
    //获取近7日销售额
    List<OrderWeekTurnoverVO> getWeekTurnover();
    //获取今日有效订单
    int getDayValidOrderCount();
    //获取本月订单数
    int getMonthOrderCount();
    //获取本月有些订单数
    int getMonthValidOrderCount();
    //获取本月营业额
    double getMonthTurnover();
    //获取今日堂食数量
    int getCanteenCount();
    //获取今日外带数量
    int getToGoCount();



    //订单支付
    void payment(Order order);
    //查询历史订单
    List<OrderVO> list(String status);
    //根据套餐id查询套餐
    Order getById(int id);
    //商家是否同意退款
    void refund(int id, int status, int payStatus, String shopReply);


}
